package com.dongjiantong.farmrecords.model;
/**
 *  检验检测表
 */
import com.dongjiantong.common.utils.JsonMapper;
import com.dongjiantong.mybatis.BaseEntity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.Strings;
import lombok.Data;

import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
import java.util.List;
import java.util.Map;

@Table(name = "farmrecords_inspection")
@Data
public class FarmRecordsInspection extends BaseEntity {
    private static final ObjectMapper objectMapper = JsonMapper.nonEmptyMapper().getMapper();
    private static final long serialVersionUID = 3638818479313857200L;

    /**
     *  单据编号
     */
    private String number;
    /**
     *  状态 1.暂存  2提交    （修改过后）
     */
    private Integer status;
    /**
     *  养殖场id
     */
    private Long farm_id;
    /**
     *  养殖场名称
     */
    private String farm_name;
    /**
     * 省id
     */
    private Integer province_id;

    /**
     * 市id
     */
    private Integer city_id;

    /**
     * 县id
     */
    private Integer region_id;

    /**
     * 镇id
     */
    private Integer street_id;

    /**
     * 村id
     */
    private Integer village_id;
    /**
     *  养殖区域
     */
    private Integer area;
    /**
     *  栏舍号id
     */
    private Long stable_id;
    /**
     *  栏舍号
     */
    private String stable_number;
    /**
     *  抽样地点
     */
    private String place;
    /**
     *  操作人
     */
    private String operator;
    /**
     *  采样日期
     */
    private Date date;
    /**
     *  采样数量
     */
    private Integer quantity;
    /**
     *  养殖品种
     */
    private Integer breed_second_type;
    /**
     *  样本类别
     */
    private Integer sample_type;
    /**
     *  单位
     */
    private Integer unit;
    /**
     *  其他检测项目
     */
    private String other_type;
    /**
     *  检测项目(疾病类型)
     */
    private Integer type;
    /**
     *  检测单位
     *  1: 市级动物疫病检测中心,
     *  2: 县级动物疫病检测中心,
     *  3: 第三方动物疫病检测中心,
     */
    private Integer detection_organization;
    /**
     * 抽样单位
     */
    private String sample_checked_unit;
    /**
     * 合格率
     */
    private String qualified_rate;
    /**
     *  阳性数,可疑数,合格数 json串
     */
    @JsonIgnore
    private String result_map_json;
    @Transient
    private Map<String,Object> result_map;

    /**
     * 检测结果() 现在需求只需要知道  合格还是不合格  1合格2不合格
     */
    private Integer result;
    /**
     *  备注
     */
    private String remark;
    /**
     *  单据是否有效
     */
    private Integer delete_flag;
    /**
     *  创建日期
     */
    private Date created_at;
    /**
     *  更新日期
     */
    private Date updated_at;

    /**
     * 关联的文件表图片list
     */
    @Transient
    private List picList;

    /**
     * 关联的文件表视频list
     */
    @Transient
    private List videoList;

    public void setResult_map_json(String result_map_json) {
        this.result_map_json = result_map_json;

        if (Strings.isNullOrEmpty(result_map_json)) {
            this.result_map = null;
        } else {
            try {
                this.result_map = objectMapper.readValue(result_map_json, new TypeReference<Map<String,Object>>() {});
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public void setResult_map(Map<String,Object> result_map) {
        this.result_map = result_map;

        if (result_map == null || result_map.isEmpty()) {
            this.result_map_json = "[]";
        } else {
            try {
                this.result_map_json = objectMapper.writeValueAsString(result_map);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}